Application specific instruction set processors (ASIPs) are processors designed for a certain application domain. The processor design comprises a plurality of resources that are functionally coupled together. Resources are understood to be all facilities used in the processor to carry out tasks, such as computation resources, e.g. low level computation resources such as multipliers and adders; high level computation resources such as filters and transform units; storage resources, such as register files and memory devices; communication resources such as ports, busses, point to point links, networks; and routing resources therein such as multiplexers. The amount, type and size of the processor resources (e.g., register files, instruction set, parallelism, interconnect) are tuned for a particular application domain of interest.
Automatic design tools such as ARM Optimode, are offered that support the designer in the development of such ASIPs. An automatic design tool is described for example in WO2004017232 of CoWare. The designer may use a design language like LISA 2.0 to describe various aspects of a processor architecture including: behavior, instruction set coding, and syntax. All components of the target system can be described in a uniform manner using syntax that is an extension to the C/C++ programming language. LISA 2.0 descriptions are non-ambiguous specifications that can be exchanged between designers of processors, software development tools, and designers of hardware/software systems. Furthermore, a hierarchical modeling style is supported to allow structuring and easy maintenance of the code. Accordingly the designer can reuse existing modules, like processing facilities (e.g., adders and multipliers), more complex processing elements, storage facilities (e.g., memories, caches and register files), and interconnect facilities (e.g., busses, networks and direct links between other facilities. Another known high-level language is nML of Target Compiler Technologies.
An ASIP is typically applied in an embedded system if general purpose processors (GPPs) or digital signal processors (DSPs) are not capable of delivering a sufficient level of performance and hard-wired blocks do not offer enough flexibility. In such an embedded system, the ASIP usually runs a single application that may even be encoded in ROM, thereby limiting the programmability to design time.